<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/4/25
 * Time: 17:45
 */

namespace app\admins\controller;

use Util\data\Sysdb;
use app\admins\controller\BaseAdmin;

class Admin extends BaseAdmin
{
    /**
     * 管理员列表
     * @return mixed
     */
    public function index(){
        // 加载管理员列表
        $data['lists'] = $this->db->table('admins')->lists();
        // 加载角色
        $data['groups'] = $this->db->table('admin_groups')->field('gid,title')->cates('gid');
        $this->assign('data',$data);
        return $this->fetch();
    }

    /**
     * 添加/编辑 管理员(编辑管理员时也使用  区别是 添加管理员时传递id为空   编辑管理员时传递的id为管理员id)
     */
    public function add(){
        $id = (int)input('get.id');
        // 加载管理员
        $data['item'] = $this->db->table('admins')->where(array('id'=>$id))->field('id,gid,username,truename,status')->item();
        // 加载角色
        $data['groups'] = $this->db->table('admin_groups')->field('gid,title')->cates('gid');

        $this->assign('data',$data);
        return $this->fetch();
    }

    /**
     * 保存管理员数据
     */
    public function save(){
//        dump($this->request->param());die;
        $id = (int)input('post.id');                       // id为0时 代表这是一个添加管理员操作 id不为0时 代表这是一个编辑管理员操作
        $data['username'] = trim(input('post.username'));
        $data['gid'] = (int)input('post.gid');
        $password = trim(input('post.pwd'));
        $data['truename'] = trim(input('post.truename'));
        $data['status'] = (int)input('post.status');


        // 管理员禁用/启用 按钮值处理 (因为数据表中0代表正常 1代表禁用)
        if($data['status'] == 1){
            $data['status'] = 0;
        }else{
            $data['status'] = 1;
        }

        // 用户输入数据校验（暂时只校验是否为空）
        if(!$data['username']){
            return json_encode(array('code'=>1,'msg'=>'用户名不能为空'));
        }
        if(!$data['gid']){
            return json_encode(array('code'=>1,'msg'=>'角色不能为空'));
        }
        if($id == 0 && !$password){
            return json_encode(array('code'=>1,'msg'=>'密码不能为空'));
        }
        if(!$data['truename']){
            return json_encode(array('code'=>1,'msg'=>'姓名不能为空'));
        }

        // 密码填写后才会加密
        // 密码md5处理(数据库保存密码时 是把用户名与密码拼接后加密  安全性更高 用户密码绑定  即使密码一样也会因为用户名不一致而看起来也不一样)
        if($password){
            $data['password'] = md5($data['username'].$password);
        }

        //true添加管理员   false修改管理员
        if($id == 0){
            // 检查用户是否已经存在
            $item = $this->db->table('admins')->where(array('username'=>$data['username']))->item();
            if($item){
                return json_encode(array('code'=>1,'msg'=>'用户已存在'));
            }
            // 加入添加时间
            $data['add_time'] = time();
            // 保存用户
            $res = $this->db->table('admins')->insert($data);
        }else{
            // 清除用户名(目的 禁止用户名的修改)
            unset($data['username']);
//            $res = true;  // 更新操作时修改的数据与原有数据一致的话会保存失败
            // 更新用户
            $res = $this->db->table('admins')->where(array('id'=>$id))->update($data);
        }

        if(!$res){
            return json_encode(array('code'=>1,'msg'=>'保存失败或未做任何改动'));
        }
        return json_encode(array('code'=>0,'msg'=>'保存成功'));
    }

    /**
     * 删除管理员
     * @return string
     */
    public function delete(){
        $id = (int)input('post.id');
        $res = $this->db->table('admins')->where(array('id'=>$id))->delete();
        if(!$res){
            return json_encode(array('code'=>1,'msg'=>'删除失败'));
        }
        return json_encode(array('code'=>0,'msg'=>'删除成功'));
    }
}